#!/bin/bash

# AI数据库管理系统启动脚本

echo "==================================="
echo "AI数据库管理系统 - 启动脚本"
echo "==================================="

# 检查Java环境
echo "检查Java环境..."
if ! command -v java &> /dev/null; then
    echo "错误: 未找到Java环境，请确保已安装Java 17或更高版本"
    exit 1
fi

JAVA_VERSION=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}' | cut -d. -f1)
if [ "$JAVA_VERSION" -lt 17 ]; then
    echo "错误: Java版本过低，需要Java 17或更高版本"
    exit 1
fi
echo "Java环境检查通过"

# 检查MySQL
echo "检查MySQL连接..."
# 这里可以添加MySQL连接检查逻辑

# 检查Node.js环境
echo "检查Node.js环境..."
if ! command -v node &> /dev/null; then
    echo "错误: 未找到Node.js环境，请确保已安装Node.js 16或更高版本"
    exit 1
fi

NODE_VERSION=$(node -v | cut -d. -f1 | sed 's/v//')
if [ "$NODE_VERSION" -lt 16 ]; then
    echo "错误: Node.js版本过低，需要Node.js 16或更高版本"
    exit 1
fi
echo "Node.js环境检查通过"

# 启动后端服务
echo "启动Spring Boot后端服务..."
cd "$(dirname "$0")"

# 构建并启动后端
echo "构建后端项目..."
./mvnw clean package -DskipTests
if [ $? -ne 0 ]; then
    echo "错误: 后端项目构建失败"
    exit 1
fi

echo "启动后端服务..."
nohup java -jar target/ai-database-manager-1.0.0.jar > backend.log 2>&1 &
BACKEND_PID=$!
echo "后端服务已启动，PID: $BACKEND_PID"

# 等待后端启动
echo "等待后端服务启动..."
sleep 10

# 检查后端服务是否启动成功
if ! curl -s http://localhost:8080/api/system/health > /dev/null; then
    echo "警告: 后端服务可能未完全启动，请检查 backend.log"
fi

# 启动前端服务
echo "启动Vue前端服务..."
cd frontend

# 安装依赖
if [ ! -d "node_modules" ]; then
    echo "安装前端依赖..."
    npm install
    if [ $? -ne 0 ]; then
        echo "错误: 前端依赖安装失败"
        kill $BACKEND_PID
        exit 1
    fi
fi

# 启动前端开发服务器
echo "启动前端开发服务器..."
npm run dev &
FRONTEND_PID=$!
echo "前端服务已启动，PID: $FRONTEND_PID"

echo "==================================="
echo "启动完成！"
echo "后端服务: http://localhost:8080/api"
echo "前端服务: http://localhost:8081"
echo "==================================="
echo "按 Ctrl+C 停止服务"

# 保存PID到文件
echo $BACKEND_PID > .backend.pid
echo $FRONTEND_PID > .frontend.pid

# 等待用户中断
trap 'echo "正在停止服务..."; kill $BACKEND_PID $FRONTEND_PID; rm -f .backend.pid .frontend.pid; exit' INT

wait